Read-only Reentrancy Attack 是 Reentrancy Attack 的升级版攻击。经典的重入攻击是通过反复调用可修改的函数 state-modifying function 实现攻击,而 Read-only 重入攻击只需利用 view function 即可完成攻击。
Read-only Reentrancy Attack 的主要攻击步骤如下:
call
时触发攻击合约的 fallback
函数fallback
函数调用「被攻击的 DeFi 协议 target DeFi protocol」
注意,虽然 DeFi 协议的计算函数本身是 view
属性的,但是其使用的状态 state 是基于其他合约的,这也让攻击者有机可乘。